When a typical computer is powered up, the computer is placed into a known system state through a process known as "booting". This boot process includes the loading of operating system software from a non-volatile data storage device, such as a hard disk, on which the operating system software is permanently stored. The operating system software is loaded into the main system memory of the computer, which is typically a volatile memory such as dynamic random access memory, from which the operating system software is executed.
However, the boot process of a typical portable computing device or personal digital assistant (PDA) does not include the loading of operating system software from a non-volatile data storage device to a main system memory. Instead, the main system memory of the PDA is typically a non-volatile memory such as read-only memory (ROM) or flash memory. The operating system software is permanently stored in and executed directly from this non-volatile memory. Application software for the PDA is also typically stored in and executed from the same non-volatile memory. Therefore, the functionality of the PDA is limited by the capacity of non-volatile memory in the PDA, which is a primary factor in the cost of the PDA. In response to this cost driven limitation to the functionality of a typical PDA, a novel approach to booting a portable computing device has been developed.